Video coding is a process of preparing video (video data), where the video is encoded to meet proper formats and specifications for recording and playback. Motion estimation is an important and computationally intensive task in video coding and video compression.
The Video Coding Experts Group (VCEG), together with the International Organization for Standardization (ISO)/International Electrotechnical Commission (IEC) joint working group, the Moving Picture Experts Group (MPEG), has developed the Advanced Video Coding (AVC) standard. The AVC standard, or AVC, is also known as H.264. AVC is an example of a standard for video encoding, and is one of the most commonly used formats for the recording, compression, and distribution of high definition video. Other standards include and are not limited to, Motion Pictures Experts Group 2 (MPEG2), Scalable Video Coding (SVC), and High Efficiency Video Coding (HEVC), etc.
As an example, AVC implements units of macro blocks of 16×16 pixels. The 16×16 macro blocks may be made up of smaller blocks (macro blocks), such as 16×8, 8×8, 4×4, etc. Motion estimation may be used in video compression schemes. Motion estimation may be performed to find a motion vector pointing to the best prediction macro block in a reference frame. Redundancy between adjacent frames may be determined where a frame is selected as a reference and subsequent frames are predicted from the reference frame using motion estimation. The motion estimation process may analyze previous or future frames to identify blocks/shapes that have not changed. In certain implementations, motion vectors may be stored in place of blocks.
The process of video compression using motion estimation is known as inter-frame coding. For inter-frame coding (also known as temporal coding), the macro blocks may be coded using blocks of pixels in previous or future encoded frames. In contrast, intra-frame coding (also known as spatial coding), the macro blocks may be encoded using blocks of pixels that are already encoded within the current frame. Motion estimation provides finding a match of pixel blocks in inter-frame coding.
AVC allows for variable macro block size motion estimation, which may also lead to higher computational complexity. In video encoding, there are a spatial part and a temporal part. For a first or reference frame, the frame is divided into a 16×16 macro block. For spatial prediction, this stage uses pixels in the first or current frame to predict the macro block that may perform processes such as compression (i.e., calculate coefficients in the current macro block). After any special predicted frames, there can either be spatially or temporally predicted frames. For temporally predicted frames, the current frame is taken and the previously encoded frame is looked to and determined if the previously encoded frame matches well with current frame. Temporal prediction may break down the macro block (e.g., 16×16) into a smaller macro block (e.g., 4×4).
Integer motion estimation may be performed, followed by fractional estimation. The fractional estimation is performed searching a smaller region fractionally, thereby avoiding having to search every possible fractional region shape combination, which would be performance limiting. The estimation is performed in order to gain compression without sacrificing quality, achieving lower bandwidth and better quality.
The larger the macro block, the less the number of bits; however, larger macro blocks may require more coefficients for compression, if the frames match well. Therefore, by splitting up the macro blocks through variable block size motion estimation, even though there are more bits, there are fewer coefficients, and the compression is more efficient.
After the integer estimation/search and fractional estimation/search is performed, if every possible shape combination is performed of all shapes searched, performance becomes very limited because of all of the possible shape combinations. A determination is made as to the best macro block/shape from the integer search point of view, and then a check/search is performed on that one shape fractionally. This method foregoes quality by not checking, searching, and updating for other macro blocks/shapes.
The following Detailed Description is provided with reference to the accompanying figures. In the figures, the left-most digit(s) of a reference number usually identifies the figure in which the reference number first appears. The use of the same reference numbers in different figures indicates similar or identical items.